# 箱线图

# 数据准备
# ⽣成0-1之间的10*4维度数据(10行，4列的数组)
import numpy as np
data = np.random.normal(size=(10,4))
labels = ['a','b','c','d']

# matplotlib 绘制
# boxplot(x,labels=None)函数，x代表绘图数据，labels是缺省值，可以为箱线图添加标签。
import matplotlib.pyplot as plt
plt.boxplot(data,labels=labels)
plt.show()

# seaborn 绘制
# boxplot(x=None,y=None,data=None)函数。data为DataFrame类型，x、y是data中的变量
import seaborn as sns
import pandas as pd
data = pd.DataFrame(data,columns=labels)
sns.boxplot(data=data)
plt.show()

# 热力图
# 基本热力图
import matplotlib.pyplot as plt
import numpy as np
import seaborn as sns

np.random.seed(0)
# 初始化参数
sns.set()
uniform_data=np.random.rand(3,3)
heatmap=sns.heatmap(uniform_data)
plt.show()

# 设置热力图区间
uniform_data=np.random.rand(3,3)
# 通过参数vmin 和 vmax控制热力图 范围区间
heatmap=sns.heatmap(uniform_data,vmin=0.2,vmax=0.5)
plt.show()

# 通过center=0 来控制颜色差异 如果数据有正负 差异更大
uniform_data=np.random.rand(3,3)
heatmap=sns.heatmap(uniform_data,center=0)
plt.show()

# 使用Seaborn自带数据
# load_dataset 方法读取的数据路径是国外的 所有存在dns问题
# 读取本地...
# cache表示优先使用本地
# data_home 本地路径
flights=sns.load_dataset('flights',data_home='seaborn-data',cache=True)
# 取出三个属性画热力图， 坐标点位置是passengers
flights=flights.pivot('month','year','passengers')
ax = sns.heatmap(flights)
plt.show()

# 将数值绘制到表格中
ax = sns.heatmap(flights,annot=True,fmt='d')
plt.show()

# 热力图 调色板
# cmap 颜色参数
# linewidths 格子宽度
# cbar
# annot 显示数值
# fmt 数值格式
ax = sns.heatmap(flights,linewidths=0.5,cmap='YlGnBu',cbar=False,annot=True,fmt='d')
plt.show()